// 房间相关工具函数
const RoomCache = require('./roomCache.js')

/**
 * 清除所有房间相关缓存
 */
function clearAllRoomCache() {
  RoomCache.clearRoom()
  wx.removeStorageSync('currentRoom')
  wx.removeStorageSync('currentScore')
}

/**
 * 跳转到首页并清除缓存
 * @param {string} title - 提示标题
 * @param {string} content - 提示内容
 * @param {boolean} showModal - 是否显示模态框
 */
function navigateToHome(title = '房间结算完成', content = '已自动结算', showModal = true) {
  if (showModal) {
    wx.showModal({
      title: title,
      content: content,
      showCancel: false,
      confirmText: '返回首页',
      success: () => {
        clearAllRoomCache()
        // 使用switchTab跳转到首页，更稳定
        wx.switchTab({
          url: '/pages/index/index',
          fail: () => {
            // 如果switchTab失败，使用navigateBack
            wx.navigateBack({
              delta: 10
            })
          }
        })
      }
    })
  } else {
    clearAllRoomCache()
    // 使用switchTab跳转到首页，更稳定
    wx.switchTab({
      url: '/pages/index/index',
      fail: () => {
        // 如果switchTab失败，使用navigateBack
        wx.navigateBack({
          delta: 10
        })
      }
    })
  }
}

/**
 * 处理结算状态并跳转
 * @param {Object} response - 结算响应数据
 * @param {string} roomId - 房间ID
 */
function handleSettlementResponse(response, roomId) {
  const settlementStatus = response.settlement_status
  
  if (settlementStatus === 'no_users') {
    // 没有用户，直接跳转到首页
    navigateToHome('房间结算完成', '房间内没有用户，已自动结算')
  } else if (settlementStatus === 'no_transactions') {
    // 没有交易记录，直接跳转到首页
    navigateToHome('房间结算完成', '房间内没有交易记录，已自动结算')
  } else {
    // 正常结算，跳转到结算详情页面
    wx.showToast({
      title: '结算成功',
      icon: 'success'
    })
    
    wx.navigateTo({
      url: `/pages/room-settlement/room-settlement?room_id=${roomId}`
    })
  }
}

/**
 * 检查房间是否已结算
 * @param {Object} roomInfo - 房间信息
 * @returns {boolean} 是否已结算
 */
function isRoomSettled(roomInfo) {
  return roomInfo && roomInfo.status === 'finished'
}

/**
 * 处理已结算房间的跳转
 * @param {string} message - 提示消息
 */
function handleSettledRoom(message = '房间已结算，请创建新房间') {
  clearAllRoomCache()
  
  wx.showToast({
    title: message,
    icon: 'none',
    duration: 2000
  })
  
  setTimeout(() => {
    wx.navigateBack({
      delta: 1
    })
  }, 2000)
}

module.exports = {
  clearAllRoomCache,
  navigateToHome,
  handleSettlementResponse,
  isRoomSettled,
  handleSettledRoom
}
